TD 10 : perte de DF et 3ème Forme Normale (FN3)

Projection de DF, Perte de DF, FN3

Fermetures transitives
Clés
Projection de DF
Perte de DF
FN3
Published

December 5, 2025

Exercice 1

Soit le schéma \(\mathcal{A}=\{A,B,C,D,E,F\}\) et l’ensemble de dépendances fonctionnelles \[\Sigma = \{ AB\to C, BC\to AD, D\to E, CF\to B\}\]

  • Calculer la fermeture \(\left\{A,B\right\}^+\).
  • Est-ce que \(\Sigma\) implique la dépendance fonctionnelle \(AB\to D\) ?
  • Est-ce que \(\Sigma\) implique la dépendance fonctionnelle \(D\to A\) ?

Cours : projection de dépendance fonctionnelle

ImportantDéfinition

Soient \(\mathcal{A}\) un schéma, \(X \subset \mathcal{A}\) et \(\Sigma\) un ensemble de dépendances fonctionnelles.

  • \(X\) est une super-clé de \(\mathcal{A}\) relativement à \(\Sigma\) si \(X^+ = \mathcal{A}\).
  • \(X\) est une clé de \(\mathcal{A}\) relativement à \(\Sigma\) si \(X\) est une super-clé minimale au sens de l’inclusion.
ImportantPropriété

Soit \(\mathcal{A}\) un schéma, \(\Sigma_1\) et \(\Sigma_2\) deux ensembles de DF sur \(\mathcal{A}\).

  • \(\Sigma_1\) et \(\Sigma_2\) sont équivalents si et seulement si \(\quad \forall X \subset \mathcal{A},\ \ X^+_{\Sigma_1} = X^+_{\Sigma_2}\)

\(X^+_{\Sigma_1}\) et \(X^+_{\Sigma_2}\) sont les fermetures transitives de \(X\) respectivement selon \(\Sigma_1\) et \(\Sigma_2\).

Notejustification

Cette propriété dit que \(\Sigma_1\) et \(\Sigma_2\) sont équivalents si et seulement si, pour tout ensemble d’attributs \(X\) , les ensembles \(X^+\) de tous les attributs déterminés par \(X\) sont identiques selon \(\Sigma_1\) et selon \(\Sigma_2\).

ImportantDéfinition

Soient \(\mathcal{A}\) et \(\mathcal{A}_1\) deux shémas tels que \(\mathcal{A}_1 \subset \mathcal{A}\).

  • On appelle projection de \(\Sigma\) sur \(\mathcal{A}_1\) et on note \(\pi_{\mathcal{A}_1}(\Sigma)\) l’ensemble des DF \(X\to Y\) impliquées par \(\Sigma\) telles que \(X\subset\mathcal{A}_1\) et \(Y\subset\mathcal{A}_1\).

Autrement dit, \(\pi_{\mathcal{A}_1}(\Sigma)\) est l’ensemble des dépendances impliquées par \(\Sigma\) qui sont locales à \(\mathcal{A}_1\).

ImportantAlgorithme de calcul de \(\pi_{\mathcal{A}_1}(\Sigma)\)

Un ensemble de DF équivalent à \(\pi_{\mathcal{A}_1}(\Sigma)\) est l’ensemble des DF

  • \(X\to (X^+\cap\mathcal{A}_1)\setminus X\) telles que \(X\subset\mathcal{A}_1\), \(X\not=\emptyset\) et \(X\not=\mathcal{A}_1\)
NoteExemple

Soient \(\mathcal{A}=\left\{A,B,C,D,E\right\}\) un schéma, \(\mathcal{A}_1=\left\{A,B,C\right\}\) et

\(\Sigma=\left\{AB\to DE, C\to E, D\to C, E\to A\right\}\)

On utilise l’algorithme vu en cours pour calculer la fermeture transitive.

  • \(A^+=A\), on n’ajoute rien car \(A\rightarrow A\) est triviale.
  • \(B^+=B\), idem.
  • \(C^+=CEA\), \(C\rightarrow C\) est triviale et \(E \notin \mathcal{A}_1\) donc on ajoute \(C\to A\),
  • \(AB^+=ABDEC\), on ajoute \(AB\to C\),
  • \(AC^+=ACE\), on n’ajoute rien.
  • \(BC^+=BCEAD\), on obtient \(BC\to A\), mais \(BC\to A\) se déduit de \(C\to A\) déjà présent, donc on n’ajoute rien.

Donc \(\pi_{\mathcal{A}_1}(\Sigma)\) est équivalent à \(\left\{C\to A, AB\to C\right\}\).

C’est un ensemble minimal de DF élémentaires qui engendrent \(\pi_{\mathcal{A}_1}(\Sigma)\), c’est à dire que l’on ne peut pas supprimer d’attribut dans une DF en conservant une DF équivalente (concept de DF élémentaire), et on ne peut pas réduire l’ensemble des DF en conservant une famille génératrice (concept d’ensemble minimal).

\(\mathcal{A}_1\) a pour clés \(BC\) ou \(AB\).

Exercice 3

Soient \(\mathcal{A}=\left\{A,B,C,D,E\right\}\) un schéma et \(\mathcal{A}_1=\left\{A,B,C\right\}\).

Pour chaque ensemble \(\Sigma\) de dépendances fonctionnelles ci-dessous, déterminer un ensemble minimal de DF élémentaires équivalent à \(\pi_{\mathcal{A}_1}(\Sigma)\) et donner la liste des clés possibles pour \(\mathcal{A}_1\) relativement à \(\Sigma\).

  1. \(\Sigma=\left\{A\to D, BD\to E, AC\to E, DE\to B\right\}\)
  2. \(\Sigma=\left\{AB\to D, AC\to E, BC\to D, D\to A, E\to B\right\}\)
  3. \(\Sigma=\left\{A\to B, B\to C, C\to D, D\to E, E\to A\right\}\)

Cours : décomposition et perte de dépendance

Lorsqu’on définit des tables dans une base de données, on décompose une relation “globale” \(R\) qui décrit l’ensemble des données du SI en une famille de relations \(R_1\), \(R_2\), \(\dots\), les tables de la BDD.

Lors d’une telle décomposition, on se pose 2 questions fondamentales :

  • Y-a-t-il perte de dépendance fonctionnelle ?
  • Y-a-t-il perte d’informations ?
ImportantDéfinition

Soit \(\mathcal{A}\) un schéma, on dit que \(\left\{\mathcal{A}_1,\dots ,\mathcal{A}_k\right\}\) est une décomposition de \(\mathcal{A}\) si et seulement si,

  • pour tout \(i\), \(\mathcal{A}_i \not=\emptyset\),
  • \({\displaystyle \bigcup_{i=1}^k \mathcal{A}_i = \mathcal{A}}\)
ImportantDéfinition : préservation de DF

Soit un schéma \(\mathcal{A}\) et une décomposition \(\left\{\mathcal{A}_1,\dots ,\mathcal{A}_k\right\}\).

  • La DF \(X\to Y\) est préservée si et seulement la fermeture de \(X\) par rapport à la réunion des DF locales \({\displaystyle \bigcup_{i=1}^k \pi_{\mathcal{A}_i}(\Sigma)}\) contient \(Y\).
ImportantAlgorithme pour vérifier la préservation de \(X\to Y\)

Pour calculer la fermeture de \(X\) par rapport aux DF locales \({\displaystyle \bigcup_{i=1}^k \pi_{\mathcal{A}_i}(\Sigma)}\), on peut utiliser l’algorithme suivant :

  • Initialisation \(Z := X\)
  • Tant que \(Z\) grandit : pour \(i=1,\dots,k\), \(Z := Z \cup\bigl( (Z\cap \mathcal{A}_i)^+_\Sigma \cap \mathcal{A}_i\bigr)\)

L’ensemble \(Z\) obtenu est la fermeture recherchée.

L’intérêt de cet algorithme est qu’il n’est pas nécessaire de calculer les DF locales.

Si au cours du calcul on obtient que \(Y\subset Z\), on peut conclure immédiatement que \(X\to Y\) est préservée.

NoteExemple

Soient \(\mathcal{A}=\left\{A,B,C,D,E\right\}\) un schéma, \(\Sigma=\left\{B\rightarrow E, CE\rightarrow A\right\}\) et la décomposition \(\left\{\mathcal{A}_1,\mathcal{A}_2,\mathcal{A}_3\right\}\) avec \[\mathcal{A}_1=\left\{A,B,C\right\}, \mathcal{A}_2=\left\{B,C,D\right\}, \mathcal{A}_3=\left\{A,C,E\right\}\]

Quelles dépendances de \(\Sigma\) sont préservées ?

  • \(CE\to A\) est préservée puisqu’elle est locale à \(\mathcal{A}_3\).
  • \(B\to E\) n’est pas préservée puisque, en utilisant l’algorithme précédent, on obtient :
    • \(Z := B\) puis \((B\cap\mathcal{A}_1)^+\cap\mathcal{A}_1\),
    • donc \(Z := B\) puis \(B^+\cap\mathcal{A}_2=BE\cap\mathcal{A}_2=B\),
    • donc \(Z := B\) puis \((B\cap\mathcal{A}_3)^+\cap\mathcal{A}_3=\emptyset\)
    • donc \(Z := B\). On a étudié toutes les projections sans accroître \(Z\) donc on sort de la boucle “tant que”.
    • A la fin de l’algorithme, \(Z\) ne contient pas \(E\) donc la dépendance \(B\to E\) n’est pas préservée.

Exercice 4

Soient \(\mathcal{A}=\left\{A,B,C,D,E\right\}\) un schéma décomposé en \(\left\{\mathcal{A}_1,\mathcal{A}_2,\mathcal{A}_3\right\}\) avec \[\mathcal{A}_1=\left\{A,B,C\right\}\quad \mathcal{A}_2=\left\{B,C,D\right\}\quad \mathcal{A}_3=\left\{A,C,E\right\}\] Pour chaque ensemble \(\Sigma\) de dépendances fonctionnelles ci-dessous, déterminer quelles dépendances sont préservées par cette décomposition, c’est-à-dire quelles DF de \(\Sigma\) sont impliquées par \({\displaystyle\bigcup_{i=1}^3 \pi_{\mathcal{A}_i}(\Sigma)}\).

  1. \(\Sigma=\left\{AC\rightarrow E, BC\to D\right\}\)
  2. \(\Sigma=\left\{A\rightarrow D, D\to E, B\to D\right\}\)
  3. \(\Sigma=\left\{A\rightarrow D, CD\to E, E\to D\right\}\)

Cours : Formes Normales 1 à 3

ImportantDéfinition : forme normale 1 (FN1)

Un schéma relationnel \(\mathcal{A}\) est en forme normale 1 (FN1) si tous les attributs ont des valeurs atomiques (pas de liste de valeurs).

NoteIdée de la forme normale 2 (FN2)

Un schéma relationnel est en deuxième forme normale (FN2) si elle est en FN1 et si tout attribut non identifiant (extérieur à une clé) ne dépend pas d’une partie d’une clé mais de toute la clé.

La FN2 assure seulement une non-redondance partielle de l’information.

ImportantDéfinition : forme normale 2 (FN2)

Un schéma relationnel \(\mathcal{A}\) en FN1 est en forme normale 2 (FN2) relativement à un ensemble de DF \(\Sigma\) ssi

  • pour toute clé \(X\) et tout \(Y\) non inclus dans \(X\), il n’existe pas \(X'\) strictement inclus dans \(X\) tel que \(X' \to Y\).
NoteMéthode pour vérifier la FN2

Pour toute clé \(X\), vérifier que la fermeture de tout sous-ensemble strict de \(X\) est inclus dans \(X\).

NoteIdée de la forme normale 3 (FN3)

Un schéma relationnel est en troisième forme normale (FN3) si elle est en FN2 et si tous les attributs non identifiants (extérieur à une clé) dépendent directement d’une clé et pas par transitivité via des attributs qui ne sont pas dans une clé , autrement dit elle est en FN3 s’il n’existe pas de dépendance fonctionnelle entre deux attributs non clés.

La FN3 assure une non-redondance partielle acceptable de l’information.

ImportantDéfinition : forme normale 3 (FN3)

Un schéma relationnel \(\mathcal{A}\) en FN1 est en forme normale 3 (FN3) relativement à un ensemble de DF \(\Sigma\) ssi pour toute dépendance non triviale \(X \to Y\) de \(\Sigma\), on a

  • le membre gauche \(X\) est une super-clé
  • ou le membre droit \(Y\) fait partie d’une clé.
NoteMéthode pour vérifier la FN3

Vérifier sur une famille génératrice de \(\Sigma\) que chaque DF vérifie la règle FN3.

Exercice 5

On considère une schéma \(\mathcal{A}\) avec les attributs

Propriétaire, Occupant, Adresse, Noapt, Nbpièces, Nbpersonnes

Un nuplet/tuple (p, o, a, n, nb1, nb2) ayant la signification suivante : La personne o habite avec nb2 personnes l’appartement de numéro n ayant nb1 pièces dont le propriétaire est p.

Une analyse de cette relation nous fournit un ensemble initial \(\Sigma\) de dépendances fonctionnelles

Occupant → Adresse
Occupant → Noapt
Occupant → Nbpersonnes
Adresse → Propriétaire
Adresse, Noapt → Occupant
Adresse, Noapt → Nbpièces

Pour chacune des décompositions suivantes, répondre aux questions :

  1. La décomposition est-elle sans perte de DF ?
  2. Déterminer la ou les clés de chaque sous-schéma \(\mathcal{A_i}\).
  3. Le schéma est-il en FN1, FN2, FN3 ?
  • Décomposition 1 : \(\mathcal{A}\) n’est pas décomposée.
  • Décomposition 2 :
    • \(\mathcal{A_1}\) = {Occupant, Adresse, Noapt, Nbpersonnes, Propriétaire},
    • \(\mathcal{A_2}\) = {Adresse, Noapt, Occupant, Nbpièces}.
  • Décomposition 3 :
    • \(\mathcal{A_1}\) = {Occupant, Adresse, Noapt, Nbpersonnes},
    • \(\mathcal{A_2}\) = {Adresse, Noapt, Occupant, Nbpièces},
    • \(\mathcal{A_3}\) = {Adresse, Propriétaire}.